
import axios from 'axios'
import { ElMessage } from 'element-plus';
import useUserStore from '@/store/user'
// import settings from '@/settings';
// import Cookies from "js-cookie";


// let userStore = useUserStore(pinia)
// let REMOTE_HOST = '192.168.0.86'  // 远程主机地址
// let REMOTE_HOST = '111.92.242.183'  // 远程主机地址
// let REMOTE_HOST = '192.168.85.1'  // 远程主机地址

axios.defaults.withCredentials=true;  // 允许请求携带cookie参数

// axios.defaults.crossDomain=true;  // 允许跨域

const http = axios.create({
    // baseURL:'http://192.168.0.16:2233/api/',  // 设置基础路径
    // baseURL:`http://${REMOTE_HOST}:2233/api/`,  // 设置基础路径
    baseURL:`/api/`,  // 设置基础路径
    timeout:10000,  // 设置超时时间为10秒
});

// 获取csrftoken,django发送post请求时需要csrf认证
async function get_csrftoken(){
    await http({
        url:'get_csrftoken/',
        method:'get'
    }).then(res=>{
        if(res.data.code==200){
            // let csrf_token = res.data.data
            // return csrf_token
        }
    })
    
    let cookie_list = document.cookie.split(';')
    let csrf_token = ''
    cookie_list.forEach((item,index)=>{
        if(item.split('=')[0].trim()=="csrftoken"){
            csrf_token = item.split('=')[1]
        }
    })

    return csrf_token
}



// 请求拦截器
http.interceptors.request.use(async (config)=>{
    // 请求拦截器，可以在这里面设置请求头等配置信息

    let userStore = useUserStore()
    if(config.method=='POST' || config.method=='post' || config.method=='PUT' || config.method=='put'||
    config.method=='DELETE' || config.method=='delete'
    ){
        // 如果是post请求，则先获取csrftoken，django发送post请求需要验证请求头中的csrftoken
        let csrf_token= await get_csrftoken()
        config.headers["X-CSRFToken"]=csrf_token
        // config.headers['Content-Type']='application/json'
        // config.headers.Authorization = `aaaa`;
        // Cookies.set('aaa','bbbbcc',{ domain: '192.168.85.1' })
        // config.headers["Cookiess"]=document.cookie
        // config.data = {
        //     'csrfmiddlewaretoken':csrf_token
        // }
        // console.log(csrf_token);
        
    }

    if(userStore.username){
        config.headers.username=userStore.username  // 每次请求都携带userInfo请求头，后端用来做判断
    }
    
    
    
    return config
})

// 响应拦截器
http.interceptors.response.use((response)=>{
    // 可以在这里添加请求成功后执行的操作
    // if(response.data.code != 200){
    //     后端返回的code不等于200时，在拦截器里统一显示错误信息
    //     ElMessage({
    //         type:'error',
    //         message:'请求失败，' + response.data.msg
    //     })
        
    //     return Promise.reject(response.data.msg)
    // }
    
    return response
},(error)=>{
    let message=''
    console.log(error);
    let status = error.response?.status
    switch(status){
        case 401:
            message='token过期'
            break
        case 403:
            message='没有权限访问'
            break
        case 404:
            message='请求地址错误'
            break
        case 500:
            message='服务器错误'
            break
        default:
            message='网络错误'
            break
    }
    // 显示错误信息
    ElMessage({
        type:'error',
        message
    })
    return Promise.reject(error)
})

export default http
// export {get_csrftoken}